/*
语法百题 解题报告：
 http://git.oschina.net/et0662/sznoi-grammar/ 
*/
#include<stdio.h>

/*数组a存储地图相信息*/
int a[6][6]={0};

/*b存储颜色方案*/
int b[6]={0};

/*total 为方案的总数*/
int total=0;

void search(int i)
{
	int j,k,flag;
	if(i==6)
	{
		flag=1;
		for(j=1;j<=5;j++)
			for(k=1;k<=5;k++)
		{
			if((j!=k) && a[j][k])
				if(b[j]==b[k])
			{
				flag=0;
				break;
			}
		}
		if(flag)
			total++;
	}
	else
	{
		for(k=0;k<4;k++)
		{
			b[i]=k;
			search(i+1);
		}
	}
}

int main(void)
{
	int n,i,j,k;

	/*有n种*/
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d%d",&j,&k);
		a[j][k]=1;
	}
	search(1);
	printf("%d\n",total);
	return 0;
}
